1. Field of the Invention
This invention relates generally to large scale storage systems, and more particularly to a highly scalable storage system for delivering high I/O operations per second (IOPS) via multiple I/O threads.
2. Description of the Related Art
Today's large companies and organizations require large-scale high technology computing environments. Such environments require equally large-scale data storage capabilities. In response, the industry of enterprise storage has formed to provide large scale data storage having high reliability, better fault tolerance, as well as a vast amount of available data storage.
Enterprise storage systems often rely on very large disk farms. Reliance upon these disk farms is based upon an assumption that the underlying individual storage components are low-performing, hence associated functionality (example: caching on RAID systems) is focused on alleviating the limitations that are imposed by having to maintain fault tolerance. However, access to such storage is still based on utilization of the operating system's driver stacks.
Although conventional enterprise storage architectures may utilize distributed clusters of storage and specialized high-performance applications, they all utilize the traditional operating system stacks and do not access the data storage directly. Because traditional operating system processes and threads are complicated and inefficient, conventional enterprise storage architectures do not support concurrency for I/O processing.
In view of the foregoing, there is a need for systems and methods that provide a highly scalable storage system for delivering high I/O operations per second (IOPS) via multiple I/O threads. As such, what is needed is an architecture that identifies concurrency in I/O processing for modules and processes at the architectural level to most efficiently utilize CPU power to achieve very high I/O operations per second (IOPS). The architecture should take into account multiple storage components in a system, and be scalable across multiple processing units. For easier maintainability, the system should be capable of operating within a traditional operating-system-based model.